In commercial and transactional printers it is common to apply a Force-Black (Force-K) transformation to colors in order to produce a more desirable color output and/or save ink/toner. This transformation essentially maps input colors that are near black (e.g., where the exact nearness is often governed by a threshold) into pure black (or gray scale) colors. More precisely, this is done by converting the input color into the CIE LAB color space (by means of input International Color Consortium (ICC) profiles) and subsequently computing the chroma, C, which is computed as:C=sqrt(A2+B2), where the input color is (L,A,B).
If the chroma is determined to be below some threshold, the input color is a Force-K candidate and an output CMYK color of c=m=y=0, k is returned, where the k value is some function of the L-value of the original input color (e.g., k=255*(L−L_min)/(L_max−L_min)). While this is the established procedure for computing a Force-K color, it can be expensive in both time and processing power.
A common alternative for obtaining Force-K colors is to modify an intermediate Look-Up Table (LUT), from which all colors are interpolated. Essentially, all LUT nodes matching the input criteria for a Force-K color are manually modified to insure that the output color is K-only, regardless of the original output color values in the LUT. For example, an RGB LUT may have all of its nodes with input colors (x,x,x) mapped to an output CMYK color of (0,0,0,k′), where the value of k′ is generally some function of x, and various formulas/expressions may be used.
While this design provides a fast/efficient solution to the Force-K problem, it can lead to color artifacts and the contamination of many colors, because modifications to the LUT can produce far-reaching color changes in the areas near the modified nodes. Colors that are themselves not actually Force-K may be heavily influenced by a nearby Force-K node in the LUT. Alternatively, true Force-K colors may still not be preserved in all cases because the Force-K boundary is often a curved manifold in the high-dimensional input space and interpolation across the boundary will often introduce color impurities.
Also, other problems may be introduced where color management becomes insensitive to the chroma threshold. The ability to accurately and reliably reproduce the Force-K transition surface is heavily influenced by the LUT node spacing. That is, for coarser LUT grids the chroma threshold may be modified without any actual difference in LUT nodes being realized. If the Force-K boundary moves, but doesn't actually traverse any new nodes, the LUT will not change.
A traditional solution to these problems has been to add more LUT nodes, which comes at the cost of greatly increasing the LUT size; or to check each color for Force-K explicitly, which also comes at the extreme cost of always having to convert every input color to the LAB space so that the chroma can be computed and compared to the threshold value. Thus, present solutions are rather costly, either in terms of memory usage or in run-time.
Accordingly, an efficient and accurate mechanism to perform Force-K transformations is desired.